package com.company.aop;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.util.Arrays;

/**
 * Created by ruoan on 2020/9/25 12:47
 */
public class MyAnimalInvocationHandler implements InvocationHandler {
    /* 当MyAnimalInvocationHandler实例化的时候会自动调用invoke方法
     * 其中 参数1：代理对象实例
     *     参数2：被代理加强的方法
     *     参数3：传入方法的参数
     */
    private Object obj;
    public MyAnimalInvocationHandler(Object object){
        this.obj=object;
    }
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        //执行加强方法前
        System.out.println("执行加强方法前.方法参数为" + Arrays.toString(args));
        //执行加强方法
        Object ret = method.invoke(obj, args);
        //执行加强方法后
        System.out.println("执行加强方法后");


        return ret;
    }
}
